home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / hack / 3_1_3 / sys / vms / makefile.utl < prev    next >
Encoding:
Makefile  |  1993-05-28  |  9.0 KB  |  285 lines

  1. #    NetHack Makefile (VMS) - for utility programs.
  2. #    SCCS Id: @(#)Makefile.utl    3.1    93/01/25
  3.  
  4. #  Copy this file to [.util]Makefile. and then edit it as needed.
  5. #  Settings for CC and CFLAGS ought to match the ones used in [.src]Makefile.
  6.  
  7. MAKE    = mms
  8. CD    = set default
  9. ECHO    = write sys$output
  10. MOVE    = rename/New        # within save device only
  11. MUNG    = search/Exact/Match=NOR    # to strip bogus #module directives
  12. RUN    = mcr            # simplest way to pass command line args
  13. TOUCH    = append/New _NLA0:    # only one file per $(TOUCH)
  14. # source tree, relative to 'src' and 'util'
  15. DAT = [-.dat]
  16. INC = [-.include]
  17. SHR = [-.sys.share]
  18. SRC = [-.src]
  19. UTL = [-.util]
  20. VMS = [-.sys.vms]
  21. # targets, with enough punctuation to keep MCR and DELETE happy
  22. MAKEDEFS= $(UTL)makedefs.exe;
  23. LEVCOMP = $(UTL)lev_comp.exe;
  24. DGNCOMP = $(UTL)dgn_comp.exe;
  25. RECOVER = $(UTL)recover.exe;
  26.  
  27. # if you are using gcc as your compiler,
  28. #    uncomment the CC definition below if it's not in your environment
  29. # CC = gcc
  30.  
  31. CFLAGS    = /Include=$(INC)/noList
  32. #CFLAGS = /Stand=VAXC/Incl=$(INC)/noList    # DECC in VAXC mode
  33. LFLAGS    = /noMap
  34. LIBS    = $(SRC)crtl/Options            # run-time library(s) needed
  35. LINK    = link
  36.  
  37. # If you don't have yacc, byacc, or bison or just don't want to run any of
  38. #    them, then make target "no_yacc" before trying to build lev_comp
  39. #    or dgn_comp.  You won't be able to modify *_comp.y though.
  40. # If you don't have lex or flex, then make target "no_lex" and leave
  41. #    *_comp.l alone.  $(VMS)lev_lex.h will be used to work-around some
  42. #    suspect code included in the distributed copies of *_lex.c.
  43. # If you do either of the above, the corresponding value of YACC and/or LEX
  44. #    below won't matter.
  45. #
  46. # Note:  VMS POSIX V1.1 lex and yacc generate code which contains an
  47. #    invalid #module directive; it order to prevent warnings for CC or
  48. #    choking by GCC, the SEARCH command is used in an attempt to strip
  49. #    then out.  Otherwise MMS would quit when making the affected targets.
  50. #    Each "munged" copy should be identical to its original if no #module
  51. #    directives are present.
  52. #
  53. # yacc/lex programs to use to generate *_comp.c, *_comp.h, and *_lex.c.
  54. # choose xxxOUT that matches xxx tool's output
  55. YACC    = bison /Define
  56. LEX    = flex
  57. #YACC    = yacc -d
  58. #LEX    = lex
  59. #YACC    = posix/Run posix$bin:yacc. "-d
  60. #LEX    = posix/Run posix$bin:lex. "
  61. # blank means foo.y -> foo_tab.c & foo_tab.h
  62. YACCOUT =        # bison
  63. #YACCOUT = ytab        # VMS POSIX
  64. #YACCOUT = y_tab    # DEC/Shell
  65. LEXOUT    = lexyy        # flex
  66. #LEXOUT  = lex_yy    # VMS POSIX
  67.  
  68. # Nothing below this line should have to be changed.
  69.  
  70. # linker options file
  71. LIBOPT    = $(SRC)crtl.opt;
  72.  
  73. # utility .c files
  74. MAKESRC    = makedefs.c
  75. SPLEVSRC   = lev_yacc.c lev_lex.c lev_main.c
  76. DGNCOMPSRC = dgn_yacc.c dgn_lex.c dgn_main.c
  77. UTILSRCS   = $(MAKESRC) $(SPLEVSRC) $(DGNCOMPSRC) panic.c recover.c
  78.  
  79. # object files for makedefs
  80. MAKEOBJS = makedefs.obj,$(SRC)monst.obj,$(SRC)objects.obj
  81. VMSMAKEOBJS = $(SRC)vmsmisc.obj
  82.  
  83. # object files for special levels compiler
  84. SPLEVOBJS = lev_main.obj,lev_yacc.obj,lev_lex.obj,panic.obj,\
  85.         $(SRC)alloc.obj,$(SRC)monst.obj,$(SRC)objects.obj,\
  86.         $(SRC)decl.obj,$(SRC)drawing.obj
  87. VMSSPLEVOBJS = $(SRC)vmsmisc.obj,$(SRC)vmsfiles.obj
  88.  
  89. # object files for dungeon compiler
  90. DGNCOMPOBJS = dgn_main.obj,dgn_yacc.obj,dgn_lex.obj,panic.obj,$(SRC)alloc.obj
  91. VMSDGNCOBJS = $(SRC)vmsmisc.obj
  92.  
  93. # object files for recovery utility
  94. RECOVOBJS = recover.obj
  95. VMSRECOBJS = $(SRC)vmsmisc.obj,$(SRC)vmsfiles.obj
  96.  
  97.  
  98. #    fake target
  99. default :
  100.       @ $(ECHO) "Oops!  No target(s) specified...."
  101.  
  102. all    : $(MAKEDEFS) $(LEVCOMP) $(DGNCOMP) $(RECOVER)
  103.       @ $(ECHO) "util is up to date."
  104.  
  105. #    special targets for folks without yacc/bison and or lex/flex
  106. no_yacc :
  107.     copy $(SHR)%%%_yacc.c $(UTL)
  108.     copy $(SHR)%%%_comp.h $(INC)
  109.       @ $(ECHO) "distributed yacc output (*_yacc.c) copied into place"
  110. no_lex :
  111.     copy $(SHR)%%%_lex.c $(UTL)
  112.     copy $(VMS)lev_lex.h $(UTL)
  113.       @ $(ECHO) "distributed lex output (*_lex.c) copied into place"
  114.  
  115. #    alternate target names for possible interactive use
  116. makedefs : $(MAKEDEFS)
  117.       @ $(ECHO) "makedefs is up to date."
  118. lev_comp : $(LEVCOMP)
  119.       @ $(ECHO) "lev_comp is up to date."
  120. dgn_comp : $(DGNCOMP)
  121.       @ $(ECHO) "dgn_comp is up to date."
  122. recover  : $(RECOVER)
  123.       @ $(ECHO) "recover is up to date."
  124.  
  125. $(LIBOPT) : $(SRC)Makefile.;        # linker options file
  126.     $(CD) $(SRC)
  127.     $(MAKE)$(MAKEFLAGS) $(LIBOPT)
  128.       @ $(CD) $(UTL)
  129.  
  130. #    dependencies for makedefs
  131. #
  132. $(MAKEDEFS) :    $(MAKEOBJS) $(VMSMAKEOBJS) $(LIBOPT)
  133.     $(LINK) $(LFLAGS) $(MAKEOBJS),$(VMSMAKEOBJS),$(LIBS)
  134.  
  135. makedefs.obj :    $(INC)config.h $(INC)permonst.h $(INC)objclass.h \
  136.         $(INC)monsym.h $(INC)artilist.h $(INC)patchlevel.h $(INC)qtext.h
  137.  
  138. $(INC)onames.h    : $(MAKEDEFS)
  139.     $(RUN) $(MAKEDEFS) -o
  140. $(INC)pm.h    : $(MAKEDEFS)
  141.     $(RUN) $(MAKEDEFS) -p
  142. $(SRC)monstr.c    : $(MAKEDEFS)
  143.     $(RUN) $(MAKEDEFS) -m
  144. # both vis_tab.h and vis_tab.c are made at the same time by makedefs -z
  145. $(INC)vis_tab.h : $(SRC)vis_tab.c
  146.     $(TOUCH) $(INC)vis_tab.h
  147. $(SRC)vis_tab.c : $(MAKEDEFS)
  148.     $(RUN) $(MAKEDEFS) -z
  149.  
  150. # the src Makefile is responsible for knowing when to call this, since
  151. # it knows all about the main src and include files
  152. $(INC)date.h :    $(MAKEDEFS)
  153.     $(RUN) $(MAKEDEFS) -v
  154.  
  155.  
  156. #    dependencies for lev_comp
  157. #
  158. $(LEVCOMP) : $(SPLEVOBJS) $(VMSSPLEVOBJS)    # $(LIBOPT)
  159.     $(LINK)/Exe=$(LEVCOMP) $(LFLAGS) $(SPLEVOBJS),$(VMSSPLEVOBJS),$(LIBS)
  160.  
  161. lev_yacc.obj : $(INC)hack.h $(INC)sp_lev.h lev_yacc.c
  162.     $(CC) $(CFLAGS) lev_yacc.c
  163. lev_lex.obj  : $(INC)hack.h $(INC)lev_comp.h $(INC)sp_lev.h lev_lex.c
  164.     @ if f$search("lev_lex.h").nes."" then    $(MOVE) lev_lex.h stdio.h
  165.     $(CC) $(CFLAGS) lev_lex.c
  166.     @ if f$search("stdio.h").nes."" then  $(MOVE) stdio.h lev_lex.h
  167. lev_main.obj : $(INC)hack.h $(INC)sp_lev.h $(INC)termcap.h lev_main.c
  168.     $(CC) $(CFLAGS) lev_main.c
  169. panic.obj    : $(INC)config.h
  170.     $(CC) $(CFLAGS) panic.c
  171.  
  172. $(INC)lev_comp.h : lev_yacc.c
  173.     $(TOUCH) $(INC)lev_comp.h
  174.  
  175. lev_yacc.c : lev_comp.y
  176.     $(YACC) lev_comp.y
  177.     $(MUNG) 'f$parse("$(YACCOUT)","lev_comp_tab.c")' "#module" /Outp=lev_yacc.c
  178.     @ if f$search("''f$parse("$(YACCOUT)","lev_comp_tab.c")'").nes."" then \
  179.         delete 'f$parse("$(YACCOUT)","lev_comp_tab.c")'
  180.     $(MOVE) 'f$parse("$(YACCOUT)","lev_comp_tab.h")' $(INC)lev_comp.h
  181.  
  182. lev_lex.c : lev_comp.l
  183.     $(LEX) lev_comp.l
  184.     $(MUNG) 'f$parse("$(LEXOUT)","lev_comp_lex.c")' "#module" /Outp=lev_lex.c
  185.     @ if f$search("''f$parse("$(LEXOUT)","lev_comp_lex.c")'").nes."" then \
  186.         delete 'f$parse("$(LEXOUT)","lev_comp_lex.c")'
  187.  
  188.  
  189. #    dependencies for dgn_comp
  190. #
  191. $(DGNCOMP) : $(DGNCOMPOBJS) $(VMSDGNCOBJS)    # $(LIBOPT)
  192.     $(LINK)/Exe=$(DGNCOMP) $(LFLAGS) $(DGNCOMPOBJS),$(VMSDGNCOBJS),$(LIBS)
  193.  
  194. dgn_yacc.obj : $(INC)config.h $(INC)dgn_file.h dgn_yacc.c
  195.     $(CC) $(CFLAGS) dgn_yacc.c
  196. dgn_lex.obj  : $(INC)config.h $(INC)dgn_comp.h $(INC)dgn_file.h dgn_lex.c
  197.     @ if f$search("lev_lex.h").nes."" then    $(MOVE) lev_lex.h stdio.h
  198.     $(CC) $(CFLAGS) dgn_lex.c
  199.     @ if f$search("stdio.h").nes."" then  $(MOVE) stdio.h lev_lex.h
  200. dgn_main.obj : $(INC)config.h dgn_main.c
  201.     $(CC) $(CFLAGS) dgn_main.c
  202.  
  203. $(INC)dgn_comp.h : dgn_yacc.c
  204.     $(TOUCH) $(INC)dgn_comp.h
  205.  
  206. dgn_yacc.c : dgn_comp.y
  207.     $(YACC) dgn_comp.y
  208.     $(MUNG) 'f$parse("$(YACCOUT)","dgn_comp_tab.c")' "#module" /Outp=dgn_yacc.c
  209.     @ if f$search("''f$parse("$(YACCOUT)","dgn_comp_tab.c")'").nes."" then \
  210.         delete 'f$parse("$(YACCOUT)","dgn_comp_tab.c")'
  211.     $(MOVE) 'f$parse("$(YACCOUT)","dgn_comp_tab.h")' $(INC)dgn_comp.h
  212.  
  213. dgn_lex.c : dgn_comp.l
  214.     $(LEX) dgn_comp.l
  215.     $(MUNG) 'f$parse("$(LEXOUT)","dgn_comp_lex.c")' "#module" /Outp=dgn_lex.c
  216.     @ if f$search("''f$parse("$(LEXOUT)","dgn_comp_lex.c")'").nes."" then \
  217.         delete 'f$parse("$(LEXOUT)","dgn_comp_lex.c")'
  218.  
  219.  
  220. #    dependencies for recover
  221. #
  222. $(RECOVER) : $(RECOVOBJS) $(VMSRECOBJS)        # $(LIBOPT)
  223.     $(LINK) $(LFLAGS) $(RECOVOBJS),$(VMSRECOBJS),$(LIBS)
  224.  
  225. recover.obj : $(INC)config.h
  226.  
  227.  
  228. # make sure object files from src are available when needed
  229. #
  230. $(SRC)alloc.obj : $(SRC)alloc.c $(INC)config.h
  231.     $(CD) $(SRC)
  232.     $(MAKE)$(MAKEFLAGS) alloc.obj
  233.       @ $(CD) $(UTL)
  234.  
  235. $(SRC)monst.obj : $(SRC)monst.c $(INC)config.h
  236.     $(CD) $(SRC)
  237.     $(MAKE)$(MAKEFLAGS) monst.obj
  238.       @ $(CD) $(UTL)
  239.  
  240. $(SRC)objects.obj : $(SRC)objects.c $(INC)config.h
  241.     $(CD) $(SRC)
  242.     $(MAKE)$(MAKEFLAGS) objects.obj
  243.       @ $(CD) $(UTL)
  244.  
  245. $(SRC)decl.obj : $(SRC)decl.c $(INC)hack.h
  246.     $(CD) $(SRC)
  247.     $(MAKE)$(MAKEFLAGS) decl.obj
  248.       @ $(CD) $(UTL)
  249.  
  250. $(SRC)drawing.obj : $(SRC)drawing.c $(INC)hack.h
  251.     $(CD) $(SRC)
  252.     $(MAKE)$(MAKEFLAGS) drawing.obj
  253.       @ $(CD) $(UTL)
  254.  
  255. # make sure hack.h dependencies get transitive information
  256. $(INC)hack.h : $(INC)config.h
  257.     $(CD) $(SRC)
  258.     $(MAKE)$(MAKEFLAGS) $(INC)hack.h
  259.       @ $(CD) $(UTL)
  260.  
  261. # VMS specific dependencies
  262. $(SRC)vmsmisc.obj :    $(VMS)vmsmisc.c
  263.     $(CD) $(SRC)
  264.     $(MAKE)$(MAKEFLAGS) vmsmisc.obj
  265.       @ $(CD) $(UTL)
  266.  
  267. $(SRC)vmsfiles.obj :    $(VMS)vmsfiles.c $(INC)config.h
  268.     $(CD) $(SRC)
  269.     $(MAKE)$(MAKEFLAGS) vmsfiles.obj
  270.       @ $(CD) $(UTL)
  271.  
  272.  
  273. clean :
  274.       - if f$search("*.*;-1").nes."" then  purge
  275.       - if f$search("*.obj") .nes."" then  delete *.obj;
  276.  
  277. spotless :    clean
  278.       - if f$search("%%%_lex.c") .nes."" then  delete %%%_lex.c;
  279.       - if f$search("%%%_yacc.c").nes."" then  delete %%%_yacc.c;
  280.       - if f$search("$(INC)%%%_comp.h").nes."" then  delete $(INC)%%%_comp.h;
  281.       - if f$search("lev_lex.h") .nes."" then  delete lev_lex.h;
  282.       - if f$search("*tab.c")     .nes."" then  delete *tab.c;
  283.       - if f$search("*.exe").nes."" then \
  284.  delete $(MAKEDEFS),$(LEVCOMP),$(DGNCOMP),$(RECOVER)
  285.